/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


  
import java.awt.Image;
import javax.swing.ImageIcon;

/**
 *
 * @author gabriel
 * Blinky, el fantasma rojo, buscará colisionar con Pac-Man. Para acercarse a
 * Pac-Man calculará la distancia (por ejemplo medido en filas y columnas) e
 * intentará primero acercarse verticalmente y luego horizontalmente.
 */
public class Blinky extends Fantasma{
    
    private String nombre; //Blinky, 
    private boolean miedo;
    private int x,y;
    private String ghostPath = "/resources/blinky_up.jpeg";
    private Image ghostImage;
    
    
     public Blinky(int x, int y) { 
        this.ghostPath = "/resources/blinky_up.jpeg";
        ImageIcon gii = new ImageIcon(this.getClass().getResource(ghostPath));
        if (gii!=null)  this.ghostImage = gii.getImage(); 
        else System.out.println("Blinky: ImageIcon==null");
        this.nombre = "Shadow (Blinky)"; 
        this.x = x;
        this.y = y;
    }
     
     
    /**
     * Busca colisionar con pacman: intentará primero acercarse verticalmente y 
     * luego horizontalmente
     */ 
    public void avanza(int x, int y, Mapa map) {  
        
        if (!super.colision(map)){
            System.out.println("Blinky no hace nada");
//             //si no hay muro a la derecha y no hemos llegado al final?
//            if (map.getElement(this.x+1, this.y)!='1'){
//                this.x++; //avanzamos por la derecha
//            }
//            //veamos hacia abajo
//            if(map.getElement(this.x, this.y+1)!='1'){
//                this.y++;
//            }
//            //izquierda
//            if(map.getElement(this.x-1, this.y)!='1'){
//                this.x--;
//            }
//            //veamos hacia arriba
//            if(map.getElement(this.x, this.y-1)!='1'){
//                this.y--;
//            }
        }
         // comprobar colisiones
        // si ok, limpiar posición actual y pintar en la nueva posición segun personaje
        // si hay galletas o frutas, se deja como estaba
        //sino continuar en la dirección adecuada al personaje
        
        //si pacman está por debajo, sera positivo, sino negativo
//        int oriVertical = this.y - y;
//        //si pacman está a la derecha será negativa sino positiva
//        int oriHorizontal = this.x - x;
//        boolean colision = false;
//        
//        if (oriVertical!=0){
//           if (oriVertical>0){
////               if (this.map[this.x][this.y+1]!='1'){                   
//               if (map.getElement(this.x,this.y+1)!='1'){
//                    this.y++;
//               } else {
//                   colision = true;
//               }
//             
//           }else{
//               if (map.getElement(this.x,this.y-1)!='1'){
//                    this.y--;
//               } else {
//                   colision = true;
//               } 
//           }
//        } 
//        
//        if (oriVertical==0 && colision){
//            if (oriHorizontal>0){
//               if (map.getElement(this.x+1,this.y)!='1'){
//                  this.x++;
//               }
//            }else{
//               if (map.getElement(this.x-1,this.y)!='1'){
//                  this.x--;
//               } 
//            } 
//        }
     
                    
//        pintate(g);    
        System.out.println("Blinky se mueve");
    }

    public Image getGhostImage() {
        return ghostImage;
    }

    public void setGhostImage(Image ghostImage) {
        this.ghostImage = ghostImage;
    }  
    
     public String getGhostPath() {
        return ghostPath!=null ? ghostPath:"Ruta imagen "+ this.getClass().getName() +" = null";
    }

    public void setGhostPath(String ghostPath) {
        this.ghostPath = ghostPath;
    }
    
     /**
     * 
     * @param map
     * @return 
     */
    @Override
    public boolean colision(Mapa map) {
        boolean ok = false;
        if (this.x>=0 && this.x<PacmanUtils.COLUMNAS && this.y>=0 && this.y<PacmanUtils.FILAS) { 
            ok = map.getElement(this.x, this.y)=='1'; 
        } 
        
        return ok;
    }
    
}
